Переход на главную страницу
Автор Уварова Елена.

 

Раздел5.

Другие разделы:
При создании анимированных GIF-файлов главная проблема состоит в том, что необходимость сохранения последовательности изображений может привести к созданию файлов очень большого размера. При работе в WWW большие размеры файлов крайне нежелательны, поскольку из-за них увеличивается продолжительность загрузки. Скорость загрузки зависит от длины файла и она настолько важна, что большинство крупных Web-узлов жестко ограничивают размер файлов.
Есть несколько стандартных приемов, позволяющих уменьшить размер GIF-изображения. К ним относятся сокращение числа цветов в изображении, числа и размеров кадров, а также отказ от полутонов.
В основе всех этих приемов лежит принцип: "чем меньше, тем лучше". Чем меньше цветов, кадров и изменений при переходе от одного кадра к другому, тем короче полученные файлы. Однако такое уменьшение влечет за собой ухудшение качества. Необходимо найти оптимальное сочетание между размером и качеством.
Рассмотрим последовательно способы оптимизации на примере рассмотренных ранее файлов.
Запомним первоначальные размеры файлов:
(254x226) - 14 523 байт с 12 кадрами - 11 709 байт

Размер файла
Если перед Вами не стоят определённые рамки, в которые нужно "вписать" анимированный GIF, то попробуйте представить каким максимальным размером в одном из кадров он будет.
Например в файле с лошадкой можно обрезать крайние границы без ущерба для анимации в целом. Обрежем сверху 8, слева 4 и справа 19 пикселей.

(231x218) - 14 322 байт

Количество кадров
Можно уменьшить вес файла, если сократить количество кадров. Чем больше кадров в анимации использовать, тем тяжелее будет файл. Если возможно уместить анимацию в 8-и кадрах в место 12-и, 8 и используйте. В примере с мячиком вырезано 4-ре кадра. Мячик по прежнему отскакивает от стенок (пусть не так плавно). Но размер уменьшился прилично.

с 8 кадрами - 8 081 байт

Оптимизация палитры и уменьшение количества цветов
Уже в процессе работы над исходными кадрами следует подумать о сокращении размера будущего файла. Постарайтесь не включать в анимацию большое количество цветов. Желательно оптимизировать размер палитры кадров до включения в анимированный GIF-файл.
Формат GIF 89A предусматривает хранение информации обо всех цветах анимации, либо в единой глобальной палитре, либо в последовательности локальных палитр. Надо исключить локальные палитры. Применение единой глобальной палитры для всей анимации означает, что цвета согласованы между кадрами.
Простого сокращения числа оттенков, составляющих изображение, как правило, недостаточно: необходимо уменьшить соответствующее значение в используемой файлом цветовой палитре. Это лучше делать путем редактирования палитры вручную, а не с помощью стандартных средств, поскольку в этом случае автоматическое уменьшение, скорее всего приведет к некорректной замене некоторых оттенков участком из нескольких используемых цветов. Необходимо на глаз определить количество составляющих рисунок оттенков, после чего откорректировать элементы палитры.
Чем меньше цветов в палитре, тем короче файлы. Для хранения небольших палитр требуется меньше места. Так для палитры из 16 цветов требуется только 4 бита, тогда как для палитры из 128 цветов уже 7 битов.
Изображения, составленные из однородно окрашенных участков (особенно текст, логотипы и компьютерная графика), лучше работают с небольшими палитрами. При создании анимированных GIF-изображений не стоит применять фотографии или файлы с градиентной заливкой, поскольку они содержат множество различных цветов, что увеличивает размер палитры.

Размер файла - 14 322 байт

Палитра для лошадки занимает 256 цвета и размер палитры на 256 цветов (8 бит). Но если внимательно посмотреть, то можно обойтись 16-ю цветами и 16-ти цветной палитрой, которая занимает 4 бита.

Размер файла - 11 142 байт

Слои в анимации
Можно получать GIF-файлы поразительно малых размеров, если воспользоваться двумя возможностями данного формата: в GIF-файлах допускается наличие прозрачных участков и задание способа перерисовки или очистки каждого кадра анимации. Если создавать анимацию, просто накладывая слои с новым изображением поверх старого, причем допускать просвечивание фрагментов предыдущего кадра, можно формировать кадры с протяженными прозрачными участками. Прозрачные области хорошо упаковываются, поскольку в алгоритме сжатия они рассматриваются как участки сплошного однородного цвета.
В примере с лошадью изменяется только положение головы и хвоста, а туловище и лужайка остаются неподвижными. Поэтому во 2, 3 и 4 кадрах неподвижную область сделаем прозрачной.
Посмотрим, на сколько уменьшилось изображение.

Кадры 2, 3 с прозрачными областями.
Первоначальная анимация. Конечная анимация.
Размер - 11 342 байт Размер - 8 499 байт

Но такой способ применим только для непрозрачных картинок.

Отсечение избыточных частей изображения
На первом кадре GIF-анимации обычно определяются полные размеры изображения, а последующие кадры могут быть меньше. Более того, их можно размещать в любом месте в пределах границ первого кадра, задавая относительные координаты Х и Y. Таким образом удается отсечь избыточные данные об изображении и уменьшить полный размер файла. Например, в картинке с лошадью можно уменьшить размер кадров, т.е. обрезать ненужные прозрачные области и задать смещение.

Первоначальная анимация. Конечная анимация.
Размер - 8 499 байт Размер - 7 957 байт

Структура файла
Чтобы эффективно оптимизировать, нужно хоть немного представлять, что такое алгоритм сжатия. Сжимается GIF перед сохранением на жёсткий диск методом LZW. Особенность этого сжатия заключается в том, что сжатию лучше поддаются те области, которые заполнены однородным цветом, а хуже области состоящие из набора разноцветных точек.
Например, если сделать фон полосатым в горизонтальную или вертикальную полоску, или разбить в шахматном порядке (причем красный и белый цвет одинаков), то минимальный размер будет у файлов с горизонтальной полоской.

Направление градиентной заливки
От направления градиентной заливки цвета тоже зависит размер файла. Изображение с горизонтальная градиентная заливка занимает меньше места на диске, чем с вертикальной, т.к. сканирование при LZW сжатии рисунка производится построчно. Но лучше вообще отказаться от градиентной заливки.

Удаление дополнительной информации.
Для уменьшения размера файла можно также удалить из файла текстовые комментарии и заголовки.

Первоначальный размер - 14 523 байт Размер после оптимизации - 7 957 байт

Image Tools Group 2004г.

На главную / Предыдущий раздел / Вверх